//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#ifndef _ProcessBindingFASTAProfile_h__
#define	_ProcessBindingFASTAProfile_h__
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#include "BindingInfo.h"
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
class ProcessBindingFASTAProfile {
  
  private:
    
    String*                    filenameBindingProfile;
    String*                    filenameListLigands;
    
    TListE <BindingInfo>*      bindingProfiles;
    TListE <String>*           ligands;
    
    String*                    filenameOut;
    
    String*                    toString;
    
  protected:  
    
    bool                       CleanData (void);
    
  public:
    
    ProcessBindingFASTAProfile ();
    ProcessBindingFASTAProfile (const ProcessBindingFASTAProfile&);
    ProcessBindingFASTAProfile (const ProcessBindingFASTAProfile*);
    
    ~ProcessBindingFASTAProfile ();

    void                        FilenameBindingProfile (String*);
    void                        FilenameListLigands (String*);
    void                        BindingProfiles (TListE <BindingInfo>*);
    void                        Ligands (TListE <String>*);
    void                        FilenameOut (String*);
    
    String*                     FilenameBindingProfile (void);
    String*                     FilenameListLigands (void);
    TListE <BindingInfo>*       BindingProfiles (void);
    TListE <String>*            Ligands (void);
    String*                     FilenameOut (void);
    
    bool                        LoadData (void);
    bool                        LoadBindingProfile (void);
    
    bool                        HideEqualClassN (void);
    bool                        HideEqualArchitectureN (void);
    bool                        HideEqualTopologyN (void);
    bool                        HideEqualHomologousSuperFamilyN (void);
    bool                        HideEqualSimilar35PercentN (void);
    bool                        HideEqualHomologous60PercentN (void);
    bool                        HideEqualLike90PercentN (void);
    bool                        HideEqualIdentical100PercentN (void);
    bool                        HideEqualDomainN (void);
    
    bool                        ExtractDomainComplexes (void);
    bool                        SeparateDomainComplexesByLigands (void);
    bool                        ExtractDomainComplexInterIntraDomainBinding (void);
    
    bool                        SplitDataInFilesByLigands (void);
    bool                        SplitDataInTwoFiles (String*, String*, float);
    bool                        SplitDifferentTopologicalDataInFilesByLigands (char);
    
    bool                        FilterChangedResiduesAsLigandHetAtm (void);
    
    bool                        WriteBindingProfileFile (void);
    
    ProcessBindingFASTAProfile  operator= (const ProcessBindingFASTAProfile&);
    
};
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#endif
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//

